package com.neu.yth.nepBackend.aqiFeedback.controller;

import com.neu.yth.nepBackend.aqiFeedback.service.IAqiFeedbackService;
import com.neu.yth.nepBackend.entity.AqiFeedback;
import com.neu.yth.nepBackend.entity.Grid;
import com.neu.yth.nepBackend.utils.Result;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.io.IOException;
import java.util.List;

/**
 * <p>
 * 空气质量公众监督反馈表 前端控制器
 * </p>
 *
 * @author YTH
 * @since 2024-05-31
 */
@RestController
@RequestMapping("/aqiFeedback")
public class AqiFeedbackController {

    @Autowired
    IAqiFeedbackService aqiFeedbackService;

    /**
     * 根据查看反馈表信息
     *
     * @param memId
     * @return
     */
    @GetMapping("/select/ById")
    public Result select(@RequestParam Integer memId) {
        return aqiFeedbackService.selectById(memId);
    }


    /**
     * 查询所有已分配信息表
     *
     * @return
     */
    @GetMapping("/select/all")
    public Result selectAll() {
        return aqiFeedbackService.selectAll();
    }

    /**
     * 查询未分配信息表
     *
     * @return
     */
    @GetMapping("/select/unAssigned")
    public Result selectUnAssigned() {
        return aqiFeedbackService.selectUnAssigned();
    }


    /**
     * 查询各网格员未分配（已提交）信息表
     *
     * @return
     */
    @GetMapping("/select/myUnAssigned")
    public Result selectMyUnAssigned(@RequestParam Integer gmId, @RequestParam Integer state) {
        return aqiFeedbackService.selectMyUnAssigned(gmId, state);
    }


    /**
     * 提交空气质量公众监督反馈表
     *
     * @param aqiFeedback
     * @return
     */
    @PostMapping("/report")
    public Result report(@RequestBody AqiFeedback aqiFeedback, @RequestHeader(value = "Authorization") String token) {
        return aqiFeedbackService.insertAqiAf(aqiFeedback, token);
    }

    /**
     * 更新空气质量公众监督反馈表
     *
     * @param aqiFeedback
     * @return
     */
    @PutMapping("/update")
    public Result update(@RequestBody AqiFeedback aqiFeedback, @RequestHeader(value = "Authorization") String token) {
        return aqiFeedbackService.updateAqiAf(aqiFeedback, token);
    }


    /**
     * 分派任务
     *
     * @param aqiFeedback
     * @return
     */
    @PutMapping("/assign")
    public Result assign(@RequestBody AqiFeedback aqiFeedback, @RequestHeader(value = "Authorization") String token) {
        return aqiFeedbackService.assign(aqiFeedback, token);
    }


    /**
     * 远程调用
     */
    @PutMapping("/assign/member")
    public Result assignMember(@RequestParam Integer afId, @RequestParam Integer gmId, @RequestHeader(value = "Authorization") String token) {
        return aqiFeedbackService.assignMember(afId, gmId, token);
    }

    /**
     * 查询待检测列表数量
     *
     * @return
     */
    @GetMapping("/select/count")
    public Result selectCount() {
        return aqiFeedbackService.selectCount();
    }

    /**
     * 查询各个省份的AQI上报数量
     * 接收一个字符串数组作为请求体
     *
     * @param provinces 字符串数组，包含省份名称
     * @return 结果对象
     */
    @PutMapping("/select/count/province")
    public Result selectCountProvince(@RequestBody List<String> provinces) {
        // 假设 aqiFeedbackService 提供了一个新的方法来处理字符串数组
        return aqiFeedbackService.selectCountProvince(provinces);
    }


}
